Análise do Jogo de Imagens aplicadas no Ensino médio

Roteiro de análise:

  1. Amostra dos dados da pesquisa realizada
  2. Determinar normalidade
  3. Determinar
  4. Histograma

Amostra dos dados da pesquisa realizada

Tabulação do número de acertos dos itens do jogo de imagens.

Coluna Descrição
Exoticas Número de acertos dentre todas as imagens exibidas do tipo exótica, valor experado é 5.
Nativas Número de acertos dentre todas as imagens exibidas do tipo nativa, valor experado é 5.

Determinado a taxa de percepção

Entende-se por taxa de percepção o fator determinado pela quantidade média de acertos dentre as questões apresentadas aos alunos, em relação a turma em que o questionario foi aplicado.

Teste de normalidade

Para determinar a normalidade nas distribuiçoes das respostas do jogo de imagens.

Identificação médio das turmas (nomes das espécies & origens)

Indice de reconhecimento médio das turmas

Q-Q Test

Teste de variância

Para determinar a variância

Algoritmo Comparação Variável p_valor variancia
F test to compare two variances Nativas x Exóticas Indice de reconhecimento 0.279 TRUE
Identificação do nome das espécies 0.6553 TRUE
Identificação da origem 0.0343 FALSE

Analises descritivas

Indice de identificação por Origem

Indice de identificação por Espécie

Testes de hipoteses

Esperado p-valor >= 0.05 na normalidade (espera-se H0) Esperado p-valor <= 0.05 no teste de hipotese (espera-se H1)

1. Os alunos itendificam mais os nomes dos animais de espécies exóticas que os animais de espécies nativas.

TEST T-student
H0 = Tident(exoticas) = Tident(nativas)
H1 = Tident(exoticas) > Tident(nativas)

Algoritmo Comparação Variável p_valor H0 H1 Confiança
Two Sample t-test Exóticas x Nativas Indice de reconhecimento 8.29379088264213e-03 FALSE TRUE 3.25e+00% ~ 2.026e+01%
Identificação do nome das espécies 2.77135680934484e-09 FALSE TRUE 2.769e+01% ~ 4.621e+01%
Identificação da origem 3.74320861066021e-12 FALSE TRUE -3.3e+01% ~ -2.249e+01%

Obs.:
Intervalo de confiança 95%
## Hipotese 1
# t.test(jogo.dados.em.p$p_nativas, jogo.dados.em.p$p_exoticas, 
#        alternative = "two.sided", paired = F, var.equal = T)

2. Os alunos identificam mais espécies de origem exótica que as de origem nativa.

TEST T-student
H0 = Tident(origem.exoticas) = Tident(origem.nativas)
H1 = Tident(origem.exoticas) > Tident(origem.nativas)

## Hipotese 2
t.test(pos_gabarito$proporcoes$por_turma$p_origem_nativas, 
       pos_gabarito$proporcoes$por_turma$p_origem_exoticas, 
       alternative = "two.sided", paired = F, var.equal = T)

    Two Sample t-test

data:  pos_gabarito$proporcoes$por_turma$p_origem_nativas and pos_gabarito$proporcoes$por_turma$p_origem_exoticas
t = 11, df = 32, p-value = 0.000000000004
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.2249 0.3300
sample estimates:
mean of x mean of y 
   0.8005    0.5231 

3. Os alunos identificam mais as espécies exóticas (nome dos animais e origem) que espécies nativas.

ANOVA

# t.test(jogo.dados.em.p$p_nativas, jogo.dados.em.p$p_origem_nativas, 
#        alternative = "two.sided", paired = F, var.equal = T)
# t.anova <- aov(g2$proporcao ~ g2$especie + g2$tipo)
# summary(t.anova)

4. Os alunos reconhecem mais mamíferos do que os demais grupos taxonómicos.

ANOVA

5.

## Hipotese 4
# t.test(jogo.dados.em.p$p_exoticas, jogo.dados.em.p$p_origem_exoticas, 
#        alternative = "two.sided", paired = F, var.equal = T)

6. Estudantes que residem na Cidade 1 (com UC) identificam mais espécies nativas do que estudantes que residem na Cidade 2 (sem UC).

t.test(nat_silvania, nat_belavista,
       alternative = "two.sided", paired = F, var.equal = T)

    Two Sample t-test

data:  nat_silvania and nat_belavista
t = -0.70051, df = 32, p-value = 0.4887
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.13259671  0.06473419
sample estimates:
mean of x mean of y 
0.3509933 0.3849245 

7. Estudantes que residem em área rural tem maior conhecimento sobre as espécies nativas.

tukey
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = value ~ area, data = tmp)

$area
                   diff         lwr       upr     p adj
Urbana-Rural 0.02655207 -0.07487179 0.1279759 0.6045352

8. Frequencia de contato natureza

tukey
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = value ~ frequencia, data = tmp)

$frequencia
                              diff     lwr    upr  p adj
Raramente-Nunca           0.255635 -0.1592 0.6705 0.4382
Ás vezes-Nunca            0.229066 -0.1833 0.6414 0.5445
Frequentemente-Nunca      0.232087 -0.1803 0.6445 0.5315
Sempre-Nunca              0.243939 -0.1684 0.6563 0.4808
Ás vezes-Raramente       -0.026569 -0.1712 0.1181 0.9867
Frequentemente-Raramente -0.023548 -0.1682 0.1211 0.9916
Sempre-Raramente         -0.011696 -0.1563 0.1329 0.9995
Frequentemente-Ás vezes   0.003021 -0.1344 0.1405 1.0000
Sempre-Ás vezes           0.014874 -0.1226 0.1523 0.9983
Sempre-Frequentemente     0.011853 -0.1256 0.1493 0.9993

t.test(pos_gabarito$proporcoes$por_turma_freq_contato$p_origem_nativas, 
       pos_gabarito$proporcoes$por_turma_freq_contato$p_origem_exoticas, 
       alternative = "two.sided", paired = F, var.equal = T)

    Two Sample t-test

data:  pos_gabarito$proporcoes$por_turma_freq_contato$p_origem_nativas and pos_gabarito$proporcoes$por_turma_freq_contato$p_origem_exoticas
t = 13.312, df = 130, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.2347653 0.3167274
sample estimates:
mean of x mean of y 
0.7952019 0.5194556 

9. Fez aulas praticas

tukey
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = value ~ fez.aula, data = tmp)

$fez.aula
                                                     diff     lwr    upr  p adj
Sim, fazenda-Não fez                           -0.0758447 -0.3129 0.1612 0.9632
Sim, FLONA-Não fez                              0.0230442 -0.1768 0.2229 0.9999
Sim, memorial do cerrado-Não fez                0.0435018 -0.1658 0.2528 0.9961
Sim, outro-Não fez                              0.0341553 -0.1871 0.2555 0.9993
Sim, parque ou trilha-Não fez                  -0.0127111 -0.1726 0.1471 1.0000
Sim, zoologico-Não fez                          0.0438775 -0.1559 0.2437 0.9948
Sim, FLONA-Sim, fazenda                         0.0988889 -0.1668 0.3646 0.9248
Sim, memorial do cerrado-Sim, fazenda           0.1193465 -0.1535 0.3922 0.8500
Sim, outro-Sim, fazenda                         0.1100000 -0.1722 0.3922 0.9077
Sim, parque ou trilha-Sim, fazenda              0.0631337 -0.1740 0.3002 0.9854
Sim, zoologico-Sim, fazenda                     0.1197222 -0.1460 0.3854 0.8310
Sim, memorial do cerrado-Sim, FLONA             0.0204576 -0.2207 0.2617 1.0000
Sim, outro-Sim, FLONA                           0.0111111 -0.2406 0.2628 1.0000
Sim, parque ou trilha-Sim, FLONA               -0.0357552 -0.2356 0.1641 0.9983
Sim, zoologico-Sim, FLONA                       0.0208333 -0.2122 0.2539 1.0000
Sim, outro-Sim, memorial do cerrado            -0.0093465 -0.2686 0.2499 1.0000
Sim, parque ou trilha-Sim, memorial do cerrado -0.0562129 -0.2655 0.1531 0.9847
Sim, zoologico-Sim, memorial do cerrado         0.0003757 -0.2408 0.2416 1.0000
Sim, parque ou trilha-Sim, outro               -0.0468663 -0.2682 0.1744 0.9957
Sim, zoologico-Sim, outro                       0.0097222 -0.2420 0.2614 1.0000
Sim, zoologico-Sim, parque ou trilha            0.0565886 -0.1432 0.2564 0.9800

10. Estudantes da Cidade 1 (com UC) tem maior número de acertos de espécies nativas.

tukey
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = value ~ flona, data = tmp)

$flona
              diff        lwr       upr     p adj
Sim-Não 0.04380711 -0.1048887 0.1925029 0.5569636

Ranking dos animais

LS0tCnRpdGxlOiAiTWVzdHJhZG8gQmlvbG9naWEiCmF1dGhvcjogIkhlcnNvbiBNZWxvIgpkYXRlOiAiMjgvMDYvMjAxOCIKb3V0cHV0OiAKICBodG1sX25vdGVib29rCi0tLQoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGVycm9yPUZBTFNFLCBpbmNsdWRlID0gRkFMU0V9CmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KHN0cmluZ3IpCmxpYnJhcnkocmVzaGFwZTIpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoZ3JpZCkKbGlicmFyeShncmlkRXh0cmEpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShub3J0ZXN0KQpsaWJyYXJ5KHN0YXRzKQpsaWJyYXJ5KG11bHRjb21wVmlldykKCnN1cHByZXNzV2FybmluZ3MoU3lzLnNldGxvY2FsZSgiTENfQUxMIiwgJ2VuX1VTLlVURi04JykpCm9wdGlvbnMoc2NpcGVuID0gOTk5LCBkaWdpdHMgPSA0KQojIG9wdGlvbnMoInNjaXBlbiI9LTEwMCwgImRpZ2l0cyI9NikKIyBnZXR3ZCgpCmxvYWQoImRhZG9zLlJEYXRhIikKYGBgCgojIyBBbsOhbGlzZSBkbyBKb2dvIGRlIEltYWdlbnMgYXBsaWNhZGFzIG5vIEVuc2lubyBtw6lkaW8KClJvdGVpcm8gZGUgYW7DoWxpc2U6CgoxLiBBbW9zdHJhIGRvcyBkYWRvcyBkYSBwZXNxdWlzYSByZWFsaXphZGEKMi4gRGV0ZXJtaW5hciBub3JtYWxpZGFkZQozLiBEZXRlcm1pbmFyIAo0LiBIaXN0b2dyYW1hCgojIyMgQW1vc3RyYSBkb3MgZGFkb3MgZGEgcGVzcXVpc2EgcmVhbGl6YWRhCgpUYWJ1bGHDp8OjbyBkbyBuw7ptZXJvIGRlIGFjZXJ0b3MgZG9zIGl0ZW5zIGRvIGpvZ28gZGUgaW1hZ2Vucy4KCmBgYHtyLCBlY2hvPUZBTFNFfQpkZXNjX2NvbHVuYXMgPC0gZGF0YS5mcmFtZSgKICAgICJDb2x1bmEiID0gYygiRXhvdGljYXMiLCAiTmF0aXZhcyIpLAogICAgIkRlc2NyacOnw6NvIiA9IGMoIk7Dum1lcm8gZGUgYWNlcnRvcyBkZW50cmUgdG9kYXMgYXMgaW1hZ2VucyBleGliaWRhcyBkbyB0aXBvIGV4w7N0aWNhLCB2YWxvciBleHBlcmFkbyDDqSA1LiIsCiAgICAgICAgICAgICAgICAgICAgIk7Dum1lcm8gZGUgYWNlcnRvcyBkZW50cmUgdG9kYXMgYXMgaW1hZ2VucyBleGliaWRhcyBkbyB0aXBvIG5hdGl2YSwgdmFsb3IgZXhwZXJhZG8gw6kgNS4iKQogICAgKQpkZXNjX2NvbHVuYXMgJT4lCiAga2FibGUoKSAlPiUKICBrYWJsZV9zdHlsaW5nKGMoInN0cmlwZWQiLCAiYm9yZGVyZWQiKSwgZnVsbF93aWR0aCA9IFRSVUUpICU+JQogIGNvbHVtbl9zcGVjKDEsIGJvbGQgPSBUUlVFKQoKYGBgCgoKYGBge3J9CmhlYWQocG9zX2dhYmFyaXRvJGRhZG9zLCAxMCkKYGBgCgojIyMjIERldGVybWluYWRvIGEgdGF4YSBkZSBwZXJjZXDDp8OjbwoKRW50ZW5kZS1zZSBwb3IgdGF4YSBkZSBwZXJjZXDDp8OjbyBvIGZhdG9yIGRldGVybWluYWRvIHBlbGEgcXVhbnRpZGFkZSBtw6lkaWEgZGUgYWNlcnRvcyBkZW50cmUgYXMgcXVlc3TDtWVzIGFwcmVzZW50YWRhcyBhb3MgYWx1bm9zLCBlbSByZWxhw6fDo28gYSB0dXJtYSBlbSBxdWUgbyBxdWVzdGlvbmFyaW8gZm9pIGFwbGljYWRvLgoKYGBge3J9CnByaW50KHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSkKYGBgCgojIyMgVGVzdGUgZGUgbm9ybWFsaWRhZGUKClBhcmEgZGV0ZXJtaW5hciBhIG5vcm1hbGlkYWRlIG5hcyBkaXN0cmlidWnDp29lcyBkYXMgcmVzcG9zdGFzIGRvIGpvZ28gZGUgaW1hZ2Vucy4KCmBgYHtyLCBlY2hvPUZBTFNFfQpub3JtYWxpZGFkZSA8LSBmdW5jdGlvbih4KSB7CiAgICB0MSA8LSBzaGFwaXJvLnRlc3QoeCkKICAgIHQyIDwtIHNmLnRlc3QoeCkKICAgIHQzIDwtIGxpbGxpZS50ZXN0KHgpCiAgICB0NCA8LSBhZC50ZXN0KHgpCiAgICB0NSA8LSBjdm0udGVzdCh4KQogICAgcmV0dXJuKCBkYXRhLmZyYW1lKAogICAgICAgIEFsZ29yaXRtbyA9IGModDEkbWV0aG9kLCB0MiRtZXRob2QsIAogICAgICAgICAgICAgICAgICAgdDMkbWV0aG9kLCB0NCRtZXRob2QsIAogICAgICAgICAgICAgICAgICAgdDUkbWV0aG9kKSwKICAgICAgICBwLnZhbG9yID0gYyh0MSRwLnZhbHVlLCB0MiRwLnZhbHVlLCAKICAgICAgICAgICAgICAgICAgICB0MyRwLnZhbHVlLCB0NCRwLnZhbHVlLCAKICAgICAgICAgICAgICAgICAgICB0NSRwLnZhbHVlKSwKICAgICAgICBOb3JtYWxpZGFkZSA9IGModDEkcC52YWx1ZSA+IC4wNSwgdDIkcC52YWx1ZSA+IC4wNSwgCiAgICAgICAgICAgICAgICAgICAgICB0MyRwLnZhbHVlID4gLjA1LCB0NCRwLnZhbHVlID4gLjA1LCAKICAgICAgICAgICAgICAgICAgICAgIHQ1JHAudmFsdWUgPiAuMDUpCiAgICApKQp9CgpncmFmaWNvX2RlbnNpZGFkZSA8LSBmdW5jdGlvbih2YXJpYXZlbCwgY29yLCB0aXR1bG8pIHsKICAgIHBsb3QgPC0gCiAgICAgICAgcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hICU+JSAKICAgICAgICBnZ2RlbnNpdHkoeCA9IHZhcmlhdmVsLCBmaWxsID0gY29yLAogICAgICAgICAgbWFpbiA9IHRpdHVsbywKICAgICAgICAgIHhsYWIgPSAiUGVyY2VudHVhbCBkZSBhY2VydG9zIikgKyAKICAgICAgICB4bGltKDAsIDEpICsgCiAgICAgICAgeWxpbSgwLCA4KQogICAgbm9tYWxpZGFkZSA8LSAKICAgICAgICBnZ3RleHR0YWJsZSgKICAgICAgICAgICAgbm9ybWFsaWRhZGUocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hW1t2YXJpYXZlbF1dKSwgCiAgICAgICAgICAgIHJvd3MgPSBOVUxMLCB0aGVtZSA9IHR0aGVtZShiYXNlX3N0eWxlID0gIm1PcmFuZ2UiLCBiYXNlX3NpemUgPSA4KQogICAgICAgICkKICAgIAogICAgcmVzdWx0YWRvIDwtIGxpc3QoCiAgICAgICAgcGxvdCA9IHBsb3QsCiAgICAgICAgbm9ybWFsaWRhZGUgPSBub21hbGlkYWRlCiAgICApCiAgICByZXR1cm4ocmVzdWx0YWRvKQp9Cgp0MSA8LSBncmFmaWNvX2RlbnNpZGFkZSgicF9uYXRpdmFzIiwgImdyZWVuIiwgIklkZW50aWZpY2HDp8OjbyBkbyBub21lIGRhcyBlc3DDqWNpZXMgZGUgb3JpZ2VtIE5hdGl2YXMiKQp0MiA8LSBncmFmaWNvX2RlbnNpZGFkZSgicF9leG90aWNhcyIsICJyZWQiLCAiSWRlbnRpZmljYcOnw6NvIGRvIG5vbWUgZGFzIGVzcMOpY2llcyBkZSBvcmlnZW0gRXjDs3RpY2FzIikKdDMgPC0gZ3JhZmljb19kZW5zaWRhZGUoInBfb3JpZ2VtX25hdGl2YXMiLCAiZGFya2dyZWVuIiwgIklkZW50aWZpY2HDp8OjbyBkZSBvcmlnZW0gTmF0aXZhcyIpCnQ0IDwtIGdyYWZpY29fZGVuc2lkYWRlKCJwX29yaWdlbV9leG90aWNhcyIsICJkYXJrcmVkIiwgIklkZW50aWZpY2HDp8OjbyBkZSBvcmlnZW0gRXjDs3RpY2FzIikKdDUgPC0gZ3JhZmljb19kZW5zaWRhZGUoInBfaW5kaWNlX25hdGl2YXMiLCAib3JhbmdlIiwgIkluZGljZSBkZSByZWNvbmhlY2ltZW50byBOYXRpdmFzIChvcmlnZW5zICsgZXNww6ljaWVzKSIpCnQ2IDwtIGdyYWZpY29fZGVuc2lkYWRlKCJwX2luZGljZV9leG90aWNhcyIsICJvcmFuZ2VyZWQiLCAiSW5kaWNlIGRlIHJlY29uaGVjaW1lbnRvIEV4w7N0aWNhcyAob3JpZ2VucyArIGVzcMOpY2llcykiKQpgYGAKCiMjIyMgSWRlbnRpZmljYcOnw6NvIG3DqWRpbyBkYXMgdHVybWFzIChub21lcyBkYXMgZXNww6ljaWVzICYgb3JpZ2VucykKCmBgYHtyIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTV9CmdyaWQuYXJyYW5nZSh0MSRwbG90LCB0MiRwbG90LAogICAgICAgICAgICAgdDEkbm9ybWFsaWRhZGUsIHQyJG5vcm1hbGlkYWRlLAogICAgICAgICAgICAgdDMkcGxvdCwgdDQkcGxvdCwKICAgICAgICAgICAgIHQzJG5vcm1hbGlkYWRlLCB0NCRub3JtYWxpZGFkZSwKICAgICAgICAgICAgIG5jb2wgPSAyLAogICAgICAgICAgICAgaGVpZ2h0cyA9IGMoMywyLDMsMiksCiAgICAgICAgICAgICB0b3AgPSB0ZXh0R3JvYigiRGVuc2lkYWRlIGRlIGlkZW50aWZpY2HDp8OjbyBtw6lkaWEgZGFzIHR1cm1hcyBlbnRyZSBcbmVzcGVjaWVzIGUgc3VhcyBvcmlnZW5zXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3AgPSBncGFyKGZvbnRzaXplID0gMjAsIGZvbnQgPSAyKSkKICAgICAgICAgICAgICkKYGBgCgojIyMjIEluZGljZSBkZSByZWNvbmhlY2ltZW50byBtw6lkaW8gZGFzIHR1cm1hcwoKYGBge3IgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9M30KZ3JpZC5hcnJhbmdlKHQ1JHBsb3QsIHQ2JHBsb3QsCiAgICAgICAgICAgICB0NSRub3JtYWxpZGFkZSwgdDYkbm9ybWFsaWRhZGUsCiAgICAgICAgICAgICBuY29sID0gMiwKICAgICAgICAgICAgIGhlaWdodHMgPSBjKDQsMyksCiAgICAgICAgICAgICB0b3AgPSB0ZXh0R3JvYigiRGVuc2lkYWRlIGRvcyBpbmRpY2VzIGRlIHJlY29uaGVjaW1lbnRvIG3DqWRpbyBkYXMgdHVybWFzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3AgPSBncGFyKGZvbnRzaXplID0gMjAsIGZvbnQgPSAyKSkKICAgICAgICAgICAgICkKYGBgCgoKIyMjIFEtUSBUZXN0CgpgYGB7ciwgZmlnLndpZHRoPTYsIGZpZy5oZWlnaHQ9NH0KcXFwbG90LmRhdGEgPC0gZnVuY3Rpb24gKHZlYywgdGl0dWxvKSB7CiAgIyBmb2xsb3dpbmcgZm91ciBsaW5lcyBmcm9tIGJhc2UgUidzIHFxbGluZSgpCiAgeSA8LSBxdWFudGlsZSh2ZWNbIWlzLm5hKHZlYyldLCBjKDAuMjUsIDAuNzUpKQogIHggPC0gcW5vcm0oYygwLjI1LCAwLjc1KSkKICBzbG9wZSA8LSBkaWZmKHkpL2RpZmYoeCkKICBpbnQgPC0geVsxTF0gLSBzbG9wZSAqIHhbMUxdCgogIGQgPC0gZGF0YS5mcmFtZShyZXNpZHMgPSB2ZWMpCgogIGdncGxvdChkLCBhZXMoc2FtcGxlID0gcmVzaWRzKSkgKyAKICAgICAgc3RhdF9xcSgpICsgCiAgICAgIGdlb21fYWJsaW5lKHNsb3BlID0gc2xvcGUsIGludGVyY2VwdCA9IGludCwgY29sID0gInJlZCIpICsKICAgICAgeGxpbSgtMiwgMikgKwogICAgICB5bGltKDAsIDEpICsKICAgICAgdGhlbWVfYncoKSArCiAgICAgIGxhYnMoCiAgICAgICAgdGl0bGUgPSB0aXR1bG8KICAgICkKfQoKcTEgPC0gcXFwbG90LmRhdGEocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfbmF0aXZhcywgIklkZW50aWZpY2HDp8OjbyBkbyBub21lIGRhcyBlc3DDqWNpZXMgZGUgb3JpZ2VtIE5hdGl2YXMiKQpxMiA8LSBxcXBsb3QuZGF0YShwb3NfZ2FiYXJpdG8kcHJvcG9yY29lcyRwb3JfdHVybWEkcF9leG90aWNhcywgIklkZW50aWZpY2HDp8OjbyBkbyBub21lIGRhcyBlc3DDqWNpZXMgZGUgb3JpZ2VtIEV4b3RpY2FzIikKcTMgPC0gcXFwbG90LmRhdGEocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfb3JpZ2VtX25hdGl2YXMsICJJZGVudGlmaWNhw6fDo28gZGUgb3JpZ2VtIE5hdGl2YXMiKQpxNCA8LSBxcXBsb3QuZGF0YShwb3NfZ2FiYXJpdG8kcHJvcG9yY29lcyRwb3JfdHVybWEkcF9vcmlnZW1fZXhvdGljYXMsICJJZGVudGlmaWNhw6fDo28gZGUgb3JpZ2VtIEV4b3RpY2FzIikKcTUgPC0gcXFwbG90LmRhdGEocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfaW5kaWNlX25hdGl2YXMsICJJbmRpY2UgZGUgcmVjb25oZWNpbWVudG8gTmF0aXZhcyAob3JpZ2VucyArIGVzcMOpY2llcykiKQpxNiA8LSBxcXBsb3QuZGF0YShwb3NfZ2FiYXJpdG8kcHJvcG9yY29lcyRwb3JfdHVybWEkcF9pbmRpY2VfZXhvdGljYXMsICJJbmRpY2UgZGUgcmVjb25oZWNpbWVudG8gRXhvdGljYXMgKG9yaWdlbnMgKyBlc3DDqWNpZXMpIikKCmdyaWQuYXJyYW5nZShxMSwgcTIsIAogICAgICAgICAgICAgcTMsIHE0LAogICAgICAgICAgICAgcTUsIHE2LAogICAgICAgICAgICAgbmNvbCA9IDIsCiAgICAgICAgICAgICB0b3AgPSB0ZXh0R3JvYigiTm9ybWFsIFEtUSBQbG90XG4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwID0gZ3Bhcihmb250c2l6ZSA9IDIwLCBmb250ID0gMikpCiAgICAgICAgICAgICApCmBgYAoKIyMjIFRlc3RlIGRlIHZhcmnDom5jaWEKClBhcmEgZGV0ZXJtaW5hciBhIHZhcmnDom5jaWEKCmBgYHtyfQp2YXJpYW5jaWEgPC0gZGF0YS5mcmFtZSgKICAgIEFsZ29yaXRtbyA9IGMoIkYgdGVzdCB0byBjb21wYXJlIHR3byB2YXJpYW5jZXMiKSwKICAgICJDb21wYXJhw6fDo28iID0gYygiTmF0aXZhcyB4IEV4w7N0aWNhcyIpLAogICAgIlZhcmnDoXZlbCIgPSBjKAogICAgICAgICJJbmRpY2UgZGUgcmVjb25oZWNpbWVudG8iLAogICAgICAgICJJZGVudGlmaWNhw6fDo28gZG8gbm9tZSBkYXMgZXNww6ljaWVzIiwKICAgICAgICAiSWRlbnRpZmljYcOnw6NvIGRhIG9yaWdlbSIKICAgICksCiAgICAicF92YWxvciIgPSBjKAogICAgICAgIHZhci50ZXN0KHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX2luZGljZV9uYXRpdmFzLCAKICAgICAgICAgICAgICAgICBwb3NfZ2FiYXJpdG8kcHJvcG9yY29lcyRwb3JfdHVybWEkcF9pbmRpY2VfZXhvdGljYXMsIAogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIpJHAudmFsdWUsCiAgICAgICAgdmFyLnRlc3QocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfbmF0aXZhcywgCiAgICAgICAgICAgICAgICAgcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfZXhvdGljYXMsIAogICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIpJHAudmFsdWUsCiAgICAgICAgdmFyLnRlc3QocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfb3JpZ2VtX25hdGl2YXMsIAogICAgICAgICAgICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX29yaWdlbV9leG90aWNhcywgCiAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIikkcC52YWx1ZQogICAgKQopCgp2YXJpYW5jaWEgPC0gdmFyaWFuY2lhICU+JQogICAgbXV0YXRlKAogICAgICAgIHZhcmlhbmNpYSA9IHBfdmFsb3IgPiAwLjA1LAogICAgICAgIHBfdmFsb3IgPSBjZWxsX3NwZWMocm91bmQocF92YWxvciwgNCksIGJvbGQgPSBULCBjb2xvciA9ICJibGFjayIsIGFsaWduID0gInJpZ2h0IiksCiAgICAgICAgdmFyaWFuY2lhID0gY2VsbF9zcGVjKHZhcmlhbmNpYSwgYm9sZCA9IHZhcmlhbmNpYSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj0gaWZlbHNlKHZhcmlhbmNpYSwgIndoaXRlIiwgImJsYWNrIiksIAogICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQgPSBpZmVsc2UodmFyaWFuY2lhLCAiZ3JlZW4iLCAiI0NDQ0NDQyIpKQogICAgKQoKdmFyaWFuY2lhICU+JQogIGthYmxlKGVzY2FwZSA9IEYpICU+JQogIGthYmxlX3N0eWxpbmcoYygic3RyaXBlZCIsICJib3JkZXJlZCIpLCBmdWxsX3dpZHRoID0gVFJVRSkgJT4lCiAgY29sdW1uX3NwZWMoMSwgYm9sZCA9IFRSVUUpICU+JQogIGNvbGxhcHNlX3Jvd3MoY29sdW1ucyA9IDE6MiwgdmFsaWduID0gInRvcCIpIApgYGAKCiMjIyBBbmFsaXNlcyBkZXNjcml0aXZhcwoKYGBge3J9CmhlYWQocG9zX2dhYmFyaXRvJGVzcGVjaWVzLCAxMCkKYGBgCgojIyMjIEluZGljZSBkZSBpZGVudGlmaWNhw6fDo28gcG9yIE9yaWdlbQoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTR9CnBvc19nYWJhcml0byRlc3BlY2llICU+JSAKICAgIGdncGxvdChhZXMoZXNwZWNpZURlc2MsIGZyLCBmaWxsID0gZ3J1cG8pKSArIAogICAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArCiAgICBnZW9tX3RleHQoYWVzKGxhYmVsID0gcGFzdGUwKHJvdW5kKGZyICogMTAwLCAxKSwgIiUiKSksIAogICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoMC45KSwgdmp1c3QgPSAwLjUsCiAgICAgICAgICAgICAgaGp1c3QgPSAtMC41KSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEuMiksIGxhYmVscyA9IHNjYWxlczo6cGVyY2VudCkgKwogICAgZmFjZXRfd3JhcCh+b3JpZ2VtLCBzY2FsZXMgPSAiZnJlZV95IikgKwogICAgY29vcmRfZmxpcCgpICsKICAgIHRoZW1lX2J3KCkgKwogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSwKICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSArCiAgICBsYWJzKHRpdGxlID0gIkluZGljZSBkZSBJZGVudGlmaWNhw6fDo28gcG9yIE9yaWdlbSIsCiAgICAgICAgIGZpbGwgPSAiR3J1cG9zIiwgeCA9ICIiLCB5ID0gIlxuRnJlcXVlbmNpYSByZWxhdGl2YSIpCgpgYGAKCiMjIyMgSW5kaWNlIGRlIGlkZW50aWZpY2HDp8OjbyBwb3IgRXNww6ljaWUKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD00fQpwb3NfZ2FiYXJpdG8kZXNwZWNpZSAlPiUgCiAgICBnZ3Bsb3QoYWVzKGVzcGVjaWVEZXNjLCBmciwgZmlsbCA9IG9yaWdlbSkpICsgCiAgICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsKICAgIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAocm91bmQoZnIgKiAxMDAsIDEpLCAiJSIpKSwgCiAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSgwLjkpLCB2anVzdCA9IDAuNSwKICAgICAgICAgICAgICBoanVzdCA9IC0wLjMpICsKICAgIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMS4yKSwgbGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgICBmYWNldF93cmFwKH5ncnVwbywgc2NhbGVzID0gImZyZWVfeSIpICsKICAgIGNvb3JkX2ZsaXAoKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSksCiAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogICAgbGFicyh0aXRsZSA9ICJJbmRpY2UgZGUgSWRlbnRpZmljYcOnw6NvIHBvciBFc3DDqWNpZSIsCiAgICAgICAgIGZpbGwgPSAiT3JpZ2VtIiwgeCA9ICIiLCB5ID0gIlxuRnJlcXVlbmNpYSByZWxhdGl2YSIpCmBgYAoKCiMjIyBUZXN0ZXMgZGUgaGlwb3Rlc2VzCgpFc3BlcmFkbyBwLXZhbG9yID49IDAuMDUgbmEgbm9ybWFsaWRhZGUgKGVzcGVyYS1zZSBIMCkKRXNwZXJhZG8gcC12YWxvciA8PSAwLjA1IG5vIHRlc3RlIGRlIGhpcG90ZXNlIChlc3BlcmEtc2UgSDEpCgojIyMjIDEuIE9zIGFsdW5vcyBpdGVuZGlmaWNhbSBtYWlzIG9zIG5vbWVzIGRvcyBhbmltYWlzIGRlIGVzcMOpY2llcyBleMOzdGljYXMgcXVlIG9zIGFuaW1haXMgZGUgZXNww6ljaWVzIG5hdGl2YXMuCgoqKlRFU1QgVC1zdHVkZW50KiogIApIMCA9IFRpZGVudChleG90aWNhcykgPSBUaWRlbnQobmF0aXZhcykgIApIMSA9IFRpZGVudChleG90aWNhcykgPiBUaWRlbnQobmF0aXZhcykKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD0zfQp0bXAgPC0gcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hICU+JQogIHNlbGVjdCh0dXJtYXMsIHBfbm9tZV9leG90aWNhcyA9IHBfZXhvdGljYXMsIHBfbm9tZV9uYXRpdmFzID0gcF9uYXRpdmFzLCBwX29yaWdlbV9leG90aWNhczpwX2luZGljZV9uYXRpdmFzKSAlPiUKICBtZWx0KGlkID0gInR1cm1hcyIpCgpjYmluZCh0bXAsIGNvbHNwbGl0KHRtcCR2YXJpYWJsZSwgIl8iLCBjKCJwIiwgImluZGljYWRvciIsICJvcmlnZW0iKSkpICU+JQogIHNlbGVjdCh0dXJtYXMsIGluZGljYWRvciwgb3JpZ2VtLCB2YWx1ZSkgJT4lCiAgZ2dwbG90KCkgKyAKICBnZW9tX2JveHBsb3QoYWVzKHggPSBvcmlnZW0sIHkgPSB2YWx1ZSwgZmlsbCA9IG9yaWdlbSksIHNob3cubGVnZW5kID0gRikgKyAKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEpLCBsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsKICBmYWNldF93cmFwKH5pbmRpY2Fkb3IpICsKICB0aGVtZV9idygpICsKICBsYWJzKHRpdGxlID0gIkJveHBsb3QgZGUgaWRlbnRpZmljYcOnw6NvIGRvcyBjcml0w6lyaW9zIGVzdGFiZWxlY2lkb3MiLAogICAgICAgeSA9ICJQZXJjZW50dWFsIGRlIGlkZW50aWZpY2HDp8OjbyIsIHggPSAiIikKYGBgCgpgYGB7cn0KdDEgPC0gdC50ZXN0KAogICAgICAgcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfaW5kaWNlX2V4b3RpY2FzLCAKICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX2luZGljZV9uYXRpdmFzLCAKICAgICAgIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIHBhaXJlZCA9IEYsIHZhci5lcXVhbCA9IFQpCnQyIDwtIHQudGVzdCgKICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX2V4b3RpY2FzLCAKICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX25hdGl2YXMsIAogICAgICAgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIiwgcGFpcmVkID0gRiwgdmFyLmVxdWFsID0gVCkKdDMgPC0gdC50ZXN0KAogICAgICAgcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hJHBfb3JpZ2VtX2V4b3RpY2FzLCAKICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX29yaWdlbV9uYXRpdmFzLCAKICAgICAgIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIHBhaXJlZCA9IEYsIHZhci5lcXVhbCA9IFQpCgpkYXRhLmZyYW1lKAogICAgQWxnb3JpdG1vID0gYyh0MSRtZXRob2QsIHQyJG1ldGhvZCwgdDMkbWV0aG9kKSwKICAgICJDb21wYXJhw6fDo28iID0gYygiRXjDs3RpY2FzIHggTmF0aXZhcyIpLAogICAgIlZhcmnDoXZlbCIgPSBjKAogICAgICAgICJJbmRpY2UgZGUgcmVjb25oZWNpbWVudG8iLAogICAgICAgICJJZGVudGlmaWNhw6fDo28gZG8gbm9tZSBkYXMgZXNww6ljaWVzIiwKICAgICAgICAiSWRlbnRpZmljYcOnw6NvIGRhIG9yaWdlbSIKICAgICksCiAgICBwX3ZhbG9yID0gYyh0MSRwLnZhbHVlLCB0MiRwLnZhbHVlLCB0MyRwLnZhbHVlKSwKICAgIEgwID0gYyh0MSRwLnZhbHVlID49IDAuMDUsIHQyJHAudmFsdWUgPj0gMC4wNSwgdDMkcC52YWx1ZSA+PSAwLjA1KSwKICAgIEgxID0gYyh0MSRwLnZhbHVlIDwgMC4wNSwgdDIkcC52YWx1ZSA8IDAuMDUsIHQzJHAudmFsdWUgPCAwLjA1KSwKICAgICJDb25maWFuw6dhIiA9IGMoCiAgICAgICAgcGFzdGUocGFzdGUwKHJvdW5kKHQxJGNvbmYuaW50ICogMTAwLCAyKSwgIiUiKSwgY29sbGFwc2UgPSAiIH4gIiksCiAgICAgICAgcGFzdGUocGFzdGUwKHJvdW5kKHQyJGNvbmYuaW50ICogMTAwLCAyKSwgIiUiKSwgY29sbGFwc2UgPSAiIH4gIiksCiAgICAgICAgcGFzdGUocGFzdGUwKHJvdW5kKHQzJGNvbmYuaW50ICogMTAwLCAyKSwgIiUiKSwgY29sbGFwc2UgPSAiIH4gIikKICAgICkKKSAlPiUKICBtdXRhdGUoCiAgICBwX3ZhbG9yID0gY2VsbF9zcGVjKHBfdmFsb3IsIGJvbGQgPSBULCBjb2xvciA9ICJibGFjayIsIGFsaWduID0gInJpZ2h0IiksCiAgICBIMCA9IGNlbGxfc3BlYyhIMCwgYm9sZCA9IEgwLAogICAgICAgICAgICAgICAgICAgY29sb3I9IGlmZWxzZShIMCwgIndoaXRlIiwgImJsYWNrIiksIAogICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZCA9IGlmZWxzZShIMCwgImdyZWVuIiwgIiNDQ0NDQ0MiKSksCiAgICBIMSA9IGNlbGxfc3BlYyhIMSwgYm9sZCA9IEgxLCAKICAgICAgICAgICAgICAgICAgIGNvbG9yID0gaWZlbHNlKEgxLCAid2hpdGUiLCAiYmxhY2siKSwgCiAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kID0gaWZlbHNlKEgxLCAiZ3JlZW4iLCAiI0NDQ0NDQyIpKQogICkgJT4lCiAga2FibGUoZXNjYXBlID0gRikgJT4lCiAga2FibGVfc3R5bGluZyhjKCJzdHJpcGVkIiwgImJvcmRlcmVkIiksIGZ1bGxfd2lkdGggPSBUUlVFKSAlPiUKICBjb2x1bW5fc3BlYygxLCBib2xkID0gVFJVRSkgJT4lCiMgIGNvbHVtbl9zcGVjKDQsIGJvbGQgPSBULCBjb2xvciA9ICJkYXJrYmx1ZSIpICU+JQogIGNvbGxhcHNlX3Jvd3MoY29sdW1ucyA9IDE6MiwgdmFsaWduID0gInRvcCIpICU+JQogIGZvb3Rub3RlKGdlbmVyYWwgPSAiSW50ZXJ2YWxvIGRlIGNvbmZpYW7Dp2EgOTUlIiwKICAgICAgICAgICBnZW5lcmFsX3RpdGxlID0gIlxuT2JzLjogIiwKICAgICAgICAgICBmb290bm90ZV9hc19jaHVuayA9IFQpCmBgYAoKCmBgYHtyfQojIyBIaXBvdGVzZSAxCiMgdC50ZXN0KGpvZ28uZGFkb3MuZW0ucCRwX25hdGl2YXMsIGpvZ28uZGFkb3MuZW0ucCRwX2V4b3RpY2FzLCAKIyAgICAgICAgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIiwgcGFpcmVkID0gRiwgdmFyLmVxdWFsID0gVCkKYGBgCgojIyMjIDIuIE9zIGFsdW5vcyBpZGVudGlmaWNhbSBtYWlzIGVzcMOpY2llcyBkZSBvcmlnZW0gZXjDs3RpY2EgcXVlIGFzIGRlIG9yaWdlbSBuYXRpdmEuCgoqKlRFU1QgVC1zdHVkZW50KiogIApIMCA9IFRpZGVudChvcmlnZW0uZXhvdGljYXMpID0gVGlkZW50KG9yaWdlbS5uYXRpdmFzKSAgCkgxID0gVGlkZW50KG9yaWdlbS5leG90aWNhcykgPiBUaWRlbnQob3JpZ2VtLm5hdGl2YXMpCgpgYGB7cn0KdC50ZXN0KHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX29yaWdlbV9uYXRpdmFzLCAKICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYSRwX29yaWdlbV9leG90aWNhcywgCiAgICAgICBhbHRlcm5hdGl2ZSA9ICJ0d28uc2lkZWQiLCBwYWlyZWQgPSBGLCB2YXIuZXF1YWwgPSBUKQpgYGAKCiMjIyMgMy4gT3MgYWx1bm9zIGlkZW50aWZpY2FtIG1haXMgYXMgZXNww6ljaWVzIGV4w7N0aWNhcyAobm9tZSBkb3MgYW5pbWFpcyBlIG9yaWdlbSkgcXVlIGVzcMOpY2llcyBuYXRpdmFzLgoKKipBTk9WQSoqICAKCmBgYHtyfQojIHQudGVzdChqb2dvLmRhZG9zLmVtLnAkcF9uYXRpdmFzLCBqb2dvLmRhZG9zLmVtLnAkcF9vcmlnZW1fbmF0aXZhcywgCiMgICAgICAgIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIHBhaXJlZCA9IEYsIHZhci5lcXVhbCA9IFQpCiMgdC5hbm92YSA8LSBhb3YoZzIkcHJvcG9yY2FvIH4gZzIkZXNwZWNpZSArIGcyJHRpcG8pCiMgc3VtbWFyeSh0LmFub3ZhKQpgYGAKCiMjIyMgNC4gT3MgYWx1bm9zIHJlY29uaGVjZW0gbWFpcyBtYW3DrWZlcm9zIGRvIHF1ZSBvcyBkZW1haXMgZ3J1cG9zIHRheG9uw7NtaWNvcy4KCioqQU5PVkEqKiAgCgoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTV9CmRhZG9zQU5PVkEgPC0gCiAgICBwb3NfZ2FiYXJpdG8kdGF4b25vbWljb3MgJT4lCiAgICBzZWxlY3QodHVybWFzLCBncnVwb3MgPSBncnVwbywgdmFsb3IpCiNhbm92YSA8LSBhb3YoZGF0YSA9IHBvc19nYWJhcml0byR0YXhvbm9taWNvcywgdmFsb3IgfiBncnVwbyArIG9yaWdlbSkKYW5vdmEgPC0gYW92KGRhdGEgPSBkYWRvc0FOT1ZBLCB2YWxvciB+IGdydXBvcykKc3VtbWFyeShhbm92YSkKdHVrZXkgPC0gVHVrZXlIU0QoYW5vdmEpCnR1a2V5CiNwbG90KHR1a2V5LCBsYXMgPSAxLCBjb2wgPSAiYnJvd24iKQoKdGt5ID0gYXMuZGF0YS5mcmFtZSh0dWtleSRncnVwb3MpCnRreSRwYWlyID0gcm93bmFtZXModGt5KQpnZ3Bsb3QodGt5LCBhZXMoY29sb3VyID0gY3V0KGBwIGFkamAsIGMoMCwgMC4wMSwgMC4wNSwgMSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGMoInA8MC4wMSIsInA8MC4wNSIsIk7Do28gc2lnbmlmaWNhdGl2byIpKSkpICsKICAgIGdlb21faGxpbmUoeWludGVyY2VwdD0wLCBsdHk9IjExIiwgY29sb3VyPSJncmV5MzAiKSArCiAgICBnZW9tX2Vycm9yYmFyKGFlcyhwYWlyLCB5bWluPWx3ciwgeW1heD11cHIpLCB3aWR0aD0wLjIpICsKICAgIGdlb21fcG9pbnQoYWVzKHBhaXIsIGRpZmYpKSArCiAgICBjb29yZF9mbGlwKCkgKwogICAgdGhlbWVfYncoKSArCiAgICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpLAogICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIpICsKICAgIGxhYnModGl0bGUgPSAiVHVrZXkiLAogICAgICAgICBjb2xvdXIgPSAiIiwgeCA9ICJDb21wYXJhw6fDo28iLCB5ID0gIkRpZmVyZW7Dp2EiKQogICAgCmBgYAoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTh9CmRhZG9zQU5PVkEgPC0gCiAgICBwb3NfZ2FiYXJpdG8kdGF4b25vbWljb3MgJT4lCiAgICBtdXRhdGUoZ3J1cG9zID0gcGFzdGUoZ3J1cG8sICJAIiwgb3JpZ2VtKSkgJT4lCiAgICBzZWxlY3QodHVybWFzLCBncnVwb3MsIHZhbG9yKQojYW5vdmEgPC0gYW92KGRhdGEgPSBwb3NfZ2FiYXJpdG8kdGF4b25vbWljb3MsIHZhbG9yIH4gZ3J1cG8gKyBvcmlnZW0pCmFub3ZhIDwtIGFvdihkYXRhID0gZGFkb3NBTk9WQSwgdmFsb3IgfiBncnVwb3MpCnN1bW1hcnkoYW5vdmEpCnR1a2V5IDwtIFR1a2V5SFNEKGFub3ZhKQp0dWtleQojcGxvdCh0dWtleSwgbGFzID0gMSwgY29sID0gImJyb3duIikKCnRreSA9IGFzLmRhdGEuZnJhbWUodHVrZXkkZ3J1cG9zKQp0a3kkcGFpciA9IHJvd25hbWVzKHRreSkKZ2dwbG90KHRreSwgYWVzKGNvbG91ciA9IGN1dChgcCBhZGpgLCBjKDAsIDAuMDEsIDAuMDUsIDEpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBjKCJwPDAuMDEiLCJwPDAuMDUiLCJOb24tU2lnIikpKSkgKwogICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTAsIGx0eT0iMTEiLCBjb2xvdXI9ImdyZXkzMCIpICsKICAgIGdlb21fZXJyb3JiYXIoYWVzKHBhaXIsIHltaW49bHdyLCB5bWF4PXVwciksIHdpZHRoPTAuMikgKwogICAgZ2VvbV9wb2ludChhZXMocGFpciwgZGlmZikpICsKICAgIGNvb3JkX2ZsaXAoKSArCiAgICB0aGVtZV9idygpICsKICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSksCiAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogICAgbGFicyh0aXRsZSA9ICJUdWtleSIsCiAgICAgICAgIGNvbG91ciA9ICIiLCB4ID0gIkNvbXBhcmHDp8OjbyIsIHkgPSAiRGlmZXJlbsOnYSIpCiAgICAKYGBgCgojIyMjIDUuIAoKYGBge3J9CiMjIEhpcG90ZXNlIDQKIyB0LnRlc3Qoam9nby5kYWRvcy5lbS5wJHBfZXhvdGljYXMsIGpvZ28uZGFkb3MuZW0ucCRwX29yaWdlbV9leG90aWNhcywgCiMgICAgICAgIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIsIHBhaXJlZCA9IEYsIHZhci5lcXVhbCA9IFQpCmBgYAoKIyMjIyA2LiBFc3R1ZGFudGVzIHF1ZSByZXNpZGVtIG5hIENpZGFkZSAxIChjb20gVUMpIGlkZW50aWZpY2FtIG1haXMgZXNww6ljaWVzIG5hdGl2YXMgZG8gcXVlIGVzdHVkYW50ZXMgcXVlIHJlc2lkZW0gbmEgQ2lkYWRlIDIgKHNlbSBVQykuCgpgYGB7cn0KcHJvcG9yY29lc1Bvck11bmljaXBpbyA8LQogICAgbWVyZ2UoCiAgICAgICAgcG9zX2dhYmFyaXRvJGRhZG9zICU+JSAKICAgICAgICAgICAgc2VsZWN0KHR1cm1hcywgbXVuaWNpcGlvKSAlPiUgCiAgICAgICAgICAgIHVuaXF1ZSgpLAogICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYV9zZXhvCiAgICApICU+JQogICAgc2VsZWN0KG11bmljaXBpbywgcF9uYXRpdmFzKSAlPiUKICAgIHRibF9kZigpCgojIHRtcCA8LSBkY2FzdChwcm9wb3Jjb2VzUG9yTXVuaWNpcGlvLCBmb3JtdWxhID0gbXVuaWNpcGlvKQojIG5hbWVzKHRtcCkgPC0gYygidmFsb3IiLCAiYmVsYV92aXN0YSIsICJzaWx2YW5pYSIpCiMgYm94cGxvdCh0bXAkdmFsb3IsIHRtcCRiZWxhX3Zpc3RhKQoKbmF0X3NpbHZhbmlhIDwtCiAgICAocHJvcG9yY29lc1Bvck11bmljaXBpbyAlPiUKICAgICAgICBmaWx0ZXIobXVuaWNpcGlvID09ICJTaWx2w6JuaWEiKSkkcF9uYXRpdmFzCm5hdF9iZWxhdmlzdGEgPC0KICAgIChwcm9wb3Jjb2VzUG9yTXVuaWNpcGlvICU+JQogICAgICAgIGZpbHRlcihtdW5pY2lwaW8gPT0gIkJlbGEgVmlzdGEgZGUgR29pw6FzIikpJHBfbmF0aXZhcwogICAgCiNjYmluZChuYXRfc2lsdmFuaWEsIG5hdF9iZWxhdmlzdGEpCmJveHBsb3QobmF0X3NpbHZhbmlhLCBuYXRfYmVsYXZpc3RhKQojc3VtbWFyeShuYXRfc2lsdmFuaWEpCiNzdW1tYXJ5KG5hdF9iZWxhdmlzdGEpCiN2YXIudGVzdChuYXRfc2lsdmFuaWEsIG5hdF9iZWxhdmlzdGEsIGFsdGVybmF0aXZlID0gInR3by5zaWRlZCIpCgp0LnRlc3QobmF0X3NpbHZhbmlhLCBuYXRfYmVsYXZpc3RhLAogICAgICAgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIiwgcGFpcmVkID0gRiwgdmFyLmVxdWFsID0gVCkKYGBgCgojIyMjIDcuIEVzdHVkYW50ZXMgcXVlIHJlc2lkZW0gZW0gw6FyZWEgcnVyYWwgdGVtIG1haW9yIGNvbmhlY2ltZW50byBzb2JyZSBhcyBlc3DDqWNpZXMgbmF0aXZhcy4KCgpgYGB7ciwgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9M30KdG1wIDwtIAogICAgcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hX2FyZWEgJT4lCiAgICBzZWxlY3QoYXJlYSwgcF9ub21lX25hdGl2YXMgPSBwX25hdGl2YXMsIHBfb3JpZ2VtX25hdGl2YXMsIHBfaW5kaWNlX25hdGl2YXMpICU+JQogICAgYXJyYW5nZShhcmVhKSAlPiUKICAgIG1lbHQoaWQgPSAiYXJlYSIpCgp0bXAgPC0KICAgIGNiaW5kKHRtcCwgY29sc3BsaXQodG1wJHZhcmlhYmxlLCAiXyIsIGMoInAiLCAiaW5kaWNhZG9yIiwgIm9yaWdlbSIpKSkgJT4lCiAgICBzZWxlY3QoYXJlYSwgaW5kaWNhZG9yLCBvcmlnZW0sIHZhbHVlKQoKdG1wICU+JQogIGdncGxvdCgpICsgCiAgZ2VvbV9ib3hwbG90KGFlcyh4ID0gYXJlYSwgeSA9IHZhbHVlLCBmaWxsID0gYXJlYSksIHNob3cubGVnZW5kID0gVCkgKyAKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEpLCBsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsKICBmYWNldF93cmFwKH5pbmRpY2Fkb3IpICsKICB0aGVtZV9idygpICsKICBsYWJzKHRpdGxlID0gIkJveHBsb3QgZGUgaWRlbnRpZmljYcOnw6NvIGRlIGVzcMOpY2llcyBOYXRpdmFzIG5vcyBjcml0w6lyaW9zIGVzdGFiZWxlY2lkb3MiLAogICAgICAgeSA9ICJQZXJjZW50dWFsIGRlIGlkZW50aWZpY2HDp8OjbyIsIHggPSAiIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKQpgYGAKCmBgYHtyfQp0LmFub3ZhIDwtIGFvdihkYXRhID0gdG1wLCBmb3JtdWxhID0gdmFsdWUgfiBhcmVhKQp0LmFub3ZhCnN1bW1hcnkodC5hbm92YSkKCnR1a2V5IDwtIFR1a2V5SFNEKHQuYW5vdmEpCnR1a2V5CmBgYAoKIyMjIyA4LiBGcmVxdWVuY2lhIGRlIGNvbnRhdG8gbmF0dXJlemEKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD0zfQp0bXAgPC0gCiAgICBwb3NfZ2FiYXJpdG8kcHJvcG9yY29lcyRwb3JfdHVybWFfZnJlcV9jb250YXRvICU+JQogICAgc2VsZWN0KGZyZXF1ZW5jaWEsIHBfbm9tZV9uYXRpdmFzID0gcF9uYXRpdmFzLCBwX29yaWdlbV9uYXRpdmFzLCBwX2luZGljZV9uYXRpdmFzKSAlPiUKICAgIGFycmFuZ2UoZnJlcXVlbmNpYSkgJT4lCiAgICBtZWx0KGlkID0gImZyZXF1ZW5jaWEiKQoKdG1wIDwtCiAgICBjYmluZCh0bXAsIGNvbHNwbGl0KHRtcCR2YXJpYWJsZSwgIl8iLCBjKCJwIiwgImluZGljYWRvciIsICJvcmlnZW0iKSkpICU+JQogICAgc2VsZWN0KGZyZXF1ZW5jaWEsIGluZGljYWRvciwgb3JpZ2VtLCB2YWx1ZSkKCnRtcCAlPiUKICBnZ3Bsb3QoKSArIAogIGdlb21fYm94cGxvdChhZXMoeCA9IGZyZXF1ZW5jaWEsIHkgPSB2YWx1ZSwgZmlsbCA9IGZyZXF1ZW5jaWEpLCBzaG93LmxlZ2VuZCA9IFQpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxKSwgbGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgZmFjZXRfd3JhcCh+aW5kaWNhZG9yKSArCiAgdGhlbWVfYncoKSArCiAgbGFicyh0aXRsZSA9ICJCb3hwbG90IGRlIGlkZW50aWZpY2HDp8OjbyBkZSBlc3DDqWNpZXMgTmF0aXZhcyBub3MgY3JpdMOpcmlvcyBlc3RhYmVsZWNpZG9zIiwKICAgICAgIHkgPSAiUGVyY2VudHVhbCBkZSBpZGVudGlmaWNhw6fDo28iLCB4ID0gIiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIikKYGBgCgpgYGB7cn0KdG1wICU+JQogICAgZmlsdGVyKGluZGljYWRvciA9PSAiaW5kaWNlIikgJT4lCiAgICBzZWxlY3QoZnJlcXVlbmNpYSwgdmFsdWUpCgp0LmFub3ZhIDwtIGFvdihkYXRhID0gdG1wLCBmb3JtdWxhID0gdmFsdWUgfiBmcmVxdWVuY2lhKQp0LmFub3ZhCnN1bW1hcnkodC5hbm92YSkKCnR1a2V5IDwtIFR1a2V5SFNEKHQuYW5vdmEpCnR1a2V5CmBgYAoKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD0zfQp0bXAgPC0gcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hX2ZyZXFfY29udGF0byAlPiUKICBzZWxlY3QoZnJlcXVlbmNpYSwgcF9ub21lX25hdGl2YXMgPSBwX25hdGl2YXMsIHBfb3JpZ2VtX25hdGl2YXMsIHBfaW5kaWNlX25hdGl2YXMpICU+JQogIG1lbHQoaWQgPSAiZnJlcXVlbmNpYSIpCgpjYmluZCh0bXAsIGNvbHNwbGl0KHRtcCR2YXJpYWJsZSwgIl8iLCBjKCJwIiwgImluZGljYWRvciIsICJvcmlnZW0iKSkpICU+JQogIHNlbGVjdChmcmVxdWVuY2lhLCBpbmRpY2Fkb3IsIG9yaWdlbSwgdmFsdWUpICU+JQogICAgIyBmaWx0ZXIob3JpZ2VtID09ICJuYXRpdmFzIikgJT4lCiAgZ2dwbG90KCkgKyAKICBnZW9tX2JveHBsb3QoYWVzKHggPSBmcmVxdWVuY2lhLCB5ID0gdmFsdWUsIGZpbGwgPSBmcmVxdWVuY2lhKSwgc2hvdy5sZWdlbmQgPSBUKSArIAogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMSksIGxhYmVscyA9IHNjYWxlczo6cGVyY2VudCkgKwogIGZhY2V0X3dyYXAofmluZGljYWRvcikgKwogIHRoZW1lX2J3KCkgKwogIGxhYnModGl0bGUgPSAiQm94cGxvdCBkZSBpZGVudGlmaWNhw6fDo28gZGUgZXNww6ljaWVzIE5hdGl2YXMgbm9zIGNyaXTDqXJpb3MgZXN0YWJlbGVjaWRvcyIsCiAgICAgICB5ID0gIlBlcmNlbnR1YWwgZGUgaWRlbnRpZmljYcOnw6NvIiwgeCA9ICIiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAyNSwgaGp1c3QgPSAxKSwgCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIpCgpgYGAKCmBgYHtyfQp0LnRlc3QocG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hX2ZyZXFfY29udGF0byRwX29yaWdlbV9uYXRpdmFzLCAKICAgICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYV9mcmVxX2NvbnRhdG8kcF9vcmlnZW1fZXhvdGljYXMsIAogICAgICAgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIiwgcGFpcmVkID0gRiwgdmFyLmVxdWFsID0gVCkKYGBgCgoKCiMjIyMgOS4gRmV6IGF1bGFzIHByYXRpY2FzCgpgYGB7ciwgZmlnLndpZHRoPTgsIGZpZy5oZWlnaHQ9M30KdG1wIDwtIAogICAgcG9zX2dhYmFyaXRvJHByb3BvcmNvZXMkcG9yX3R1cm1hX2Zlel9hdWxhICU+JQogICAgc2VsZWN0KGZlei5hdWxhLCBwX25vbWVfbmF0aXZhcyA9IHBfbmF0aXZhcywgcF9vcmlnZW1fbmF0aXZhcywgcF9pbmRpY2VfbmF0aXZhcykgJT4lCiAgICBhcnJhbmdlKGZlei5hdWxhKSAlPiUKICAgIG1lbHQoaWQgPSAiZmV6LmF1bGEiKQoKdG1wIDwtIGNiaW5kKHRtcCwgY29sc3BsaXQodG1wJHZhcmlhYmxlLCAiXyIsIGMoInAiLCAiaW5kaWNhZG9yIiwgIm9yaWdlbSIpKSkgJT4lCiAgc2VsZWN0KGZlei5hdWxhLCBpbmRpY2Fkb3IsIG9yaWdlbSwgdmFsdWUpIAoKdG1wICU+JQogIGdncGxvdCgpICsgCiAgZ2VvbV9ib3hwbG90KGFlcyh4ID0gZmV6LmF1bGEsIHkgPSB2YWx1ZSwgZmlsbCA9IGZlei5hdWxhKSwgc2hvdy5sZWdlbmQgPSBUKSArIAogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsMSksIGxhYmVscyA9IHNjYWxlczo6cGVyY2VudCkgKwogIGZhY2V0X3dyYXAofmluZGljYWRvcikgKwogIHRoZW1lX2J3KCkgKwogIGxhYnModGl0bGUgPSAiQm94cGxvdCBkZSBpZGVudGlmaWNhw6fDo28gZGUgZXNww6ljaWVzIE5hdGl2YXMgbm9zIGNyaXTDqXJpb3MgZXN0YWJlbGVjaWRvcyAtIEFsdW5vcyBxdWUgZml6ZXJhbSBhdWxhIiwKICAgICAgIHkgPSAiUGVyY2VudHVhbCBkZSBpZGVudGlmaWNhw6fDo28iLCB4ID0gIiIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDI1LCBoanVzdCA9IDEpLCAKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikKYGBgCgpgYGB7cn0KdC5hbm92YSA8LSBhb3YoZGF0YSA9IHRtcCwgZm9ybXVsYSA9IHZhbHVlIH4gZmV6LmF1bGEpCnQuYW5vdmEKc3VtbWFyeSh0LmFub3ZhKQoKdHVrZXkgPC0gVHVrZXlIU0QodC5hbm92YSkKdHVrZXkKYGBgCgoKIyMjIyAxMC4gRXN0dWRhbnRlcyBkYSBDaWRhZGUgMSAoY29tIFVDKSB0ZW0gbWFpb3IgbsO6bWVybyBkZSBhY2VydG9zIGRlIGVzcMOpY2llcyBuYXRpdmFzLgoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTN9CnRtcCA8LSAKICAgIHBvc19nYWJhcml0byRwcm9wb3Jjb2VzJHBvcl90dXJtYV9mbG9uYSAlPiUKICAgIHNlbGVjdChmbG9uYSwgcF9ub21lX25hdGl2YXMgPSBwX25hdGl2YXMsIHBfb3JpZ2VtX25hdGl2YXMsIHBfaW5kaWNlX25hdGl2YXMpICU+JQogICAgYXJyYW5nZShmbG9uYSkgJT4lCiAgICBtZWx0KGlkID0gImZsb25hIikKCnRtcCA8LSBjYmluZCh0bXAsIGNvbHNwbGl0KHRtcCR2YXJpYWJsZSwgIl8iLCBjKCJwIiwgImluZGljYWRvciIsICJvcmlnZW0iKSkpICU+JQogIHNlbGVjdChmbG9uYSwgaW5kaWNhZG9yLCBvcmlnZW0sIHZhbHVlKSAKCnRtcCAlPiUKICBnZ3Bsb3QoKSArIAogIGdlb21fYm94cGxvdChhZXMoeCA9IGZsb25hLCB5ID0gdmFsdWUsIGZpbGwgPSBmbG9uYSksIHNob3cubGVnZW5kID0gVCkgKyAKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEpLCBsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsKICBmYWNldF93cmFwKH5pbmRpY2Fkb3IpICsKICB0aGVtZV9idygpICsKICBsYWJzKHRpdGxlID0gIkJveHBsb3QgZGUgaWRlbnRpZmljYcOnw6NvIGRlIGVzcMOpY2llcyBOYXRpdmFzIG5vcyBjcml0w6lyaW9zIGVzdGFiZWxlY2lkb3MgLSBBbHVub3MgcXVlIHZpc2l0YXJhbSBhIEZsb25hIiwKICAgICAgIHkgPSAiUGVyY2VudHVhbCBkZSBpZGVudGlmaWNhw6fDo28iLCB4ID0gIiIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDI1LCBoanVzdCA9IDEpLCAKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikKYGBgCgpgYGB7cn0KdC5hbm92YSA8LSBhb3YoZGF0YSA9IHRtcCwgZm9ybXVsYSA9IHZhbHVlIH4gZmxvbmEpCnQuYW5vdmEKc3VtbWFyeSh0LmFub3ZhKQoKdHVrZXkgPC0gVHVrZXlIU0QodC5hbm92YSkKdHVrZXkKYGBgCgojIyMjIFJhbmtpbmcgZG9zIGFuaW1haXMKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD00fQphMSA8LSAKICAgIHBvc19nYWJhcml0byRyYWtpbmdfYW5pbWFpcyRuYXRpdm9zICU+JQogICAgaGVhZCgyMCkgJT4lCiAgICBnZ3Bsb3QoYWVzKHggPSBhbmltYWlzLCB5ID0gZnJlcSwgZmlsbCA9IGZyZXEpKSArCiAgICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIHNob3cubGVnZW5kID0gRikgKwogICAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZyZXEpLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKDAuOSksIHZqdXN0ID0gLTEsIGhqdXN0ID0gMC41KSArCiAgICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDkwKSkgKwogICAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSAib3JhbmdlIiwgaGlnaCA9ICJyZWQiKSArCiAgICB0aGVtZV9idygpICsKICAgIGxhYnModGl0bGUgPSAiRXNww6ljaWVzIGNpdGFkYXMgY29tbyBuYXRpdmFzIiwKICAgICAgIHkgPSAiRnJlcXVlbmNpYSIsIHggPSAiIikgKwogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAyNSwgaGp1c3QgPSAxKSkKYTIgPC0gCiAgICBwb3NfZ2FiYXJpdG8kcmFraW5nX2FuaW1haXMkZXhvdGljb3MgJT4lCiAgICBoZWFkKDIwKSAlPiUKICAgIGdncGxvdChhZXMoeCA9IGFuaW1haXMsIHkgPSBmcmVxLCBmaWxsID0gZnJlcSkpICsKICAgIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5Iiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgICBnZW9tX3RleHQoYWVzKGxhYmVsID0gZnJlcSksIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UoMC45KSwgdmp1c3QgPSAtMSwgaGp1c3QgPSAwLjUpICsKICAgIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsOTApKSArCiAgICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJsaWdodGJsdWUiLCBoaWdoID0gImRhcmtibHVlIikgKwogICAgdGhlbWVfYncoKSArCiAgICBsYWJzKHRpdGxlID0gIkVzcMOpY2llcyBjaXRhZGFzIGNvbW8gZXjDs3RpY2FzIiwKICAgICAgIHkgPSAiRnJlcXVlbmNpYSIsIHggPSAiIikgKwogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAyNSwgaGp1c3QgPSAxKSkKZ3JpZC5hcnJhbmdlKGExLCBhMiwKICAgICAgICAgICAgIG5yb3cgPSAyLAogICAgICAgICAgICAgdG9wID0gdGV4dEdyb2IoIlRPUCAyMCAtIFJhbmtpbmcgZGFzIGVzcMOpY2llcyBjaXRhZGFzIGNvbW8gZXhlbXBsb1xuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncCA9IGdwYXIoZm9udHNpemUgPSAyMCwgZm9udCA9IDIpKQopCmBgYAoK